
import Controlador.AnuncioController;
import Controlador.AnuncioControllerImpl;
import Controlador.SesionController;
import Controlador.SesionControllerImpl;
import Controlador.TareaController;
import Controlador.TareaControllerImpl;
import Controlador.TareaRealizadaController;
import Controlador.TareaRealizadaControllerImpl;
import Controlador.UsuarioController;
import Controlador.UsuarioControllerImpl;
import Modelo.AnuncioModel;
import Modelo.AnuncioModelImpl;
import Modelo.SesionModel;
import Modelo.SesionModelImpl;
import Modelo.TareaModel;
import Modelo.TareaModelImpl;
import Modelo.TareaRealizadaModel;
import Modelo.TareaRealizadaModelImpl;
import Modelo.UsuarioModel;
import Modelo.UsuarioModelImpl;
import Vista.Anuncio.AnuncioView;
import Vista.Anuncio.AnuncioViewImpl;
import Vista.Sesion.SesionView;
import Vista.Sesion.SesionViewImpl;
import Vista.Tarea.TareaView;
import Vista.Tarea.TareaViewImpl;
import Vista.TareaRealizada.TareaRealizadaView;
import Vista.TareaRealizada.TareaRealizadaViewImpl;
import Vista.Usuario.UsuarioView;
import Vista.Usuario.UsuarioViewImpl;
import Vista.VistaPrincipal;
import java.util.ArrayList;
import java.util.List;

/*
 *  Proyecto eJAM [G12]
 *  Miembros:
 *      - Javier Ruiz Hidalgo
 *      - Adrian Ramos Cápitas
 *      - Miguel Alejandro Esteban Ordóñez
 */

public class Main {

    public static void main(String[] args) throws Exception {

        //Usuario
        UsuarioModel usuarioModel = new UsuarioModelImpl();
        UsuarioView usuarioView1 =new UsuarioViewImpl();
        List<UsuarioView> usuarioViews= new ArrayList<UsuarioView>();
        usuarioViews.add(usuarioView1);
        UsuarioController usuarioController = new UsuarioControllerImpl();
        usuarioController.setup(usuarioModel, usuarioViews);

        //Anuncio
        AnuncioModel anuncioModel = new AnuncioModelImpl();
        AnuncioView anuncioView1 =new AnuncioViewImpl();
        List<AnuncioView> anuncioViews= new ArrayList<AnuncioView>();
        anuncioViews.add(anuncioView1);
        AnuncioController anuncioController = new AnuncioControllerImpl();
        anuncioController.setup(anuncioModel, anuncioViews);

        //Tarea
        TareaModel tareaModel = new TareaModelImpl();
        TareaView tareaView1 =new TareaViewImpl(anuncioView1);
        List<TareaView> tareaViews= new ArrayList<TareaView>();
        tareaViews.add(tareaView1);
        TareaController tareaController = new TareaControllerImpl();
        tareaController.setup(tareaModel, tareaViews);

        //Tarea Realizada
        TareaRealizadaModel tareaRealizadaModel = new TareaRealizadaModelImpl();
        TareaRealizadaView tareaRealizadaView1 =new TareaRealizadaViewImpl(tareaView1);
        List<TareaRealizadaView> tareaRealizadaViews= new ArrayList<TareaRealizadaView>();
        tareaRealizadaViews.add(tareaRealizadaView1);
        TareaRealizadaController tareaRealizadaController = new TareaRealizadaControllerImpl();
        tareaRealizadaController.setup(tareaRealizadaModel, tareaRealizadaViews);

        //Sesion
        SesionModel sesionModel = new SesionModelImpl();
        SesionView sesionView1 =new SesionViewImpl(usuarioView1);
        List<SesionView> sesionViews= new ArrayList<SesionView>();
        sesionViews.add(sesionView1);
        SesionController sesionController = new SesionControllerImpl();
        sesionController.setup(sesionModel, sesionViews);

        VistaPrincipal vp = new VistaPrincipal(usuarioView1, tareaView1, tareaRealizadaView1, sesionView1, anuncioView1);
        vp.setVisible(true);
    }

}
